本文章的內容僅限學術及研究用途,請勿進行任何違法行為,否則後果自負。
讓我們先來認識一下 M1 卡認證的協定及範例,以便能夠更進一步認識攻擊手法的原理。
M1 卡的 Crypto-1 三步驟認證(Three Pass Authentication)是一種用來確保卡片和讀卡器之間通信安全的機制。讀卡機和卡片會同時使用金鑰來協調出真正用來加密或解密資料的 keystream,這個 keystream 每加密一個位元就會變動。這個機制是由以下三個步驟所組成:
以下是均民使用 Proxmark3 攔截的通訊資料,並以此為例來介紹實際的認證過程:
首先,第一部分是 M1 卡片的喚醒、防碰撞與選擇卡片:
接下來,讀卡機傳送 60 00 CRC
給卡片,其中 0x60
代表對 Key A 進行認證,0x00
代表區塊 0:
接著,卡片會傳送卡片挑戰 nt 給讀卡機:
然後,讀卡機會產生一個讀卡機挑戰 nr 並與 keystream1 進行 XOR 運算,並使用卡片挑戰 nt 產生 ar 與 keystream2 進行 XOR 運算之後一起傳送給卡片:
接下來,卡片會驗證 ar 的正確性,如果正確就使用讀卡機挑戰 nr 產生 at 與 keystream3 進行 XOR 運算之後傳送給讀卡機:
最後,讀卡機會驗證 at 的正確性,到此就完成了 M1 卡的三步驟認證。